#ifndef GRAPHICS_H_
#define GRAPHICS_H_

#pragma comment(lib, "d3dx10.lib")
#pragma comment(lib, "d3d10.lib")

#include <D3D10.h>
#include <D3DX10.h>

#include <stdlib.h>
#include <tchar.h>

#include "coloured.h"
#include "mesh.h"
#include "skybox.h"
#include "camera.h"

// constants
const D3DXVECTOR4 background(1.0f, 1.0f, 1.0f, 1.0f);

class Graphics {
public:
	Graphics();
	~Graphics();

	bool InitialiseGraphics();
	void Cleanup();

	void Render();
private:
	// fields
	ID3D10Device *device;
	IDXGISwapChain *swapChain;
	ID3D10RenderTargetView *renderTargetView;
	ID3D10Texture2D *depthStencil;
	ID3D10DepthStencilView *depthStencilView;
	ID3D10RasterizerState *solidState, *wireframed;

	// matrices
	D3DXMATRIX View, Projection;

	// models
	Coloured *coloured;
	Mesh *mesh;
	Skybox *skybox;
	Camera *camera;
};

#endif
